//引入Vuex
import { createStore } from 'vuex'

//声明存储城市的默认变量
var defaultCity = '上海'

if(!localStorage.city){
	var defaultCity = '上海'
}else{
	var defaultCity = localStorage.city
}

//将vuex实例暴露出去【导出去】
export default createStore({
	//存放状态；声明一个可以传递到页面渲染的变量【不能自增，自减】
	//对象数据
	//mapState辅助函数：帮助用户在组件界面中，接收获取state里面的变量
	//组件：	...mapSate(['可以传递的变量名'])
	state:{
		city : defaultCity //city变量是可以传递出去的
	},
	//对state成员变量的操作
	//没有异步操作直接在组件内提交数据时向mutations里面组件写的方法提交数据
	mutations : {
		// 函数：state参数是mutations里面的固定项
		// cName：城市名
		changeCity(state,cName){
			// state对象里面的city属性的值 = 函数传递过来的参数cName
			state.city = cName
			
			// 将点击传递过来的cName传入localStorage
			localStorage.city = cName
		}
	},
	//异步操作
	//为了让state成员变量/mutationgs里面的方法可以实现异步操作
	actions : {
		//函数
	},
	//模块化管理：当项目十分庞大、数据状态复杂；每个模块，如登陆用于一个自己的vuex核心概念
	//嵌套子模块
	modules : {
		// login: {
		//  state : {},
		// mutationn {},
		// actions : {}
		// modules : {
			
		// 	 }
		// }
	}
})

/*
Vuex的核心概念：
	State存放状态
	mutations函数操作【针对State里面的成员变量，对数据的修改、增加/删除等】
*/